import numpy as np
import pandas as pd

def process_poi(dir_path,save_dir,num, max_longitude,min_longitude,max_latitude, min_latitude,
                longitude_unit,latitude_unit):
    map_list = {'美食': 'Food', '酒店': 'Hotel', '交通设施': 'Transport', '生活服务': 'Life',
                '旅游景点': 'Attractions', '休闲娱乐': 'Entertainment', '运动健身': 'Sport',
                '教育培训': 'Education', '文化传媒': 'Media', '医疗': 'Medical', '购物': 'Shopping',
                '汽车服务': 'Car_Service', '金融': 'Financial', '房地产': 'Estate', '公司企业': 'Company',
                '政府机构': 'Government', '出入口': 'Gateway', '自然地物': 'Natural_features'}
    sheet_name = ['美食', '酒店', '交通设施', '生活服务', '旅游景点', '休闲娱乐', '运动健身',
                  '教育培训', '文化传媒', '医疗', '购物', '汽车服务', '金融', '房地产', '公司企业',
                  '政府机构', '出入口', '自然地物']
    df = pd.DataFrame(columns=['grid_id'])
    for item in sheet_name:
        one_data = pd.read_excel(dir_path + 'chengdu_POI.xlsx', sheetname=item, encoding='gbk', index=False,
                                 names=['name', 'latitude', 'longitude', 'address', 'area', 'type'])
        one_data = one_data[one_data.filter(regex='^(?!Unnamed)').columns]
        one_data = one_data[(one_data['longitude'] > min_longitude) & (one_data['longitude'] < max_longitude) &
                    (one_data['latitude'] > min_latitude) & (one_data['latitude'] < max_latitude)]
        grid_id = (one_data['longitude'] - min_longitude)//longitude_unit + \
                  (one_data['latitude'] - min_latitude)//latitude_unit*num
        temp = pd.value_counts(grid_id)
        temp = temp.reset_index()
        temp.columns = ['grid_id', item]
        df = pd.merge(df, temp, on='grid_id', how='outer')

    df.fillna(0, inplace=True)
    df.rename(columns=map_list, inplace=True)
    df.to_csv(save_dir+'POI_data.csv', index=False)